The present claimed invention relates generally to apparatus and method for programming an electronic device. More particularly, the present claimed invention relates to a system and a method of using a graphics applications programming interface in programming the design of a microcontroller.
Microcontroller devices which utilize nonvolatile memories, such as Electrically Programmable Read Only Memories (EPROMs) are well known in the art. The EPROM or flash memory generally contains the applications software for the microcontroller and must be programmed with data depending upon the particular intended application for the microcontroller. The application software is generally developed using a personal computer. Configuration registers can be programmed from the data loaded into the microcontroller""s programmable memory to in turn program hardware resources of the microcontroller.
The data representing this application software, commonly known as a load module, are then transferred to special purpose programming equipment, such as a Data I/O machine. The memory of the microcontroller is then programmed by the special purpose programming equipment usually without employing the processing capabilities of the microcontroller. When such special purpose programming equipment is used, the microcontroller is typically physically placed in the circuit of the programming equipment to accomplish the programming process.
Occasionally, it is necessary to modify the existing contents of the micrococontroller""s memory, such as during testing, development, or adjustment of the algorithm executed by the microcontroller. To perform this alteration with conventional microcontroller devices, it is usually necessary to remove the microcontroller from the system in which it is installed and place it in the circuit of the programming equipment.
Another technique that is currently used by microcontroller devices can be referred to as automatic self programming (ASP). ASP requires that the microcontroller containing programmable memory be placed in circuit with a source memory containing data that will be transferred to the microcontroller""s memory. When appropriate control signals and programming voltages are applied, the microcontroller transfers data from the source memory to its own memory. Clearly, this technique requires the source memory to be preprogrammed by special purpose programming equipment.
Some microcontroller devices include provisions for programming the microcontroller memory while the unit remains installed in the system. These devices manifest a feature commonly known as run time programming. Run time programming schemes generally provide special circuits that allow user application software to modify the memory contents. This modification or programming, is usually done by invoking a particular subroutine during the normal course of software execution. One disadvantage of run time programming is that it usually requires the user to devote a portion of the microcontroller""s available memory space to support the programming function. This memory space is generally used for a software subroutine that serves as an interface between the user""s application software and the microcontroller""s programming mechanism.
A second disadvantage of the run time programming is that they are not well suited to programming a completely new (un-programmed) microcontroller. Since most run time programming mechanisms are dependent on the above mentioned interface subroutine, they must have the interface subroutine installed by means of special purpose programming equipment before it can be used to program any of the remaining user memory space.
In addition to the drawback described above, the user interface portions of many conventional software applications for programming microcontrollers are very difficult to use. Many of the user interface windows used in the software tend to pop-up as the user is attempting to program the microcontroller. Windows in the design software are popped based on a xe2x80x9cflat-organizedxe2x80x9d drop down menu system with little or cues as to the overall design process. Each window tends to correspond to a discrete function of the microcontroller and many functions may be required to do simple programming tasks. Importantly, the windows give no information as to which ones should be used first and the subsequent order that they should be used in. Also, it was difficult transitioning from one window to another for sharing resources because the programmer could not remember which window contained the source of data required and which window needed the data. Having many windows open on a computer screen can often confuse the programmer as the programmer is unable to keep track of which window represents which function of the microcontroller.
Accordingly, to take advantage of applications and the numerous microcontrollers being developed, a microcontroller programming application with extensibility capabilities to allow programmers to dynamically program a microcontroller with datasheets incorporated in the programming software is needed. A need also exists for xe2x80x9cout-of-the-boxxe2x80x9d microcontroller programming system solutions to allow programmers to efficiently organize design components necessary for the complete programming of a microcontroller without unduly tasking the programmer. Specifically, the present invention provides an organized way of displaying a device editor workspace information in an efficient manner.
Embodiments of the present invention are directed to a system and a method for programming microcontrollers in a microcontroller design environment. In general, embodiments of the present invention provide a graphics interface based modularized method of programming for designing features of a programmable microcontroller having programmable hardware resources. In other words, the invention provides the programmer the ability to organize various functional components of the microcontroller with integrated datasheet information readily on the same computer screen by implementing click and drop features of the design software.
Embodiments of the invention include a microcontroller programming software application and system that include device editor system that allows the programmer to compartmentalize the design of a microcontroller by modularizing the various components that create the desired functionality of the microcontroller using a graphics user interface. The contents of the device editor are presented to the programmer in the form of sub-workspaces which are displayed on the programmer""s computer screen. The programmer is then able to navigate through various selection windows and icons to retrieve information on selected predefined and pre-configured user modules of the desired microcontroller components. The workspaces can be presented according to a predetermined sequence to aid the programmers development tasks.
Embodiments of the present invention include user modules that contain pre-configured functions of a target microcontroller device and present the available resources in the design datasheets. The information provided by the user module is typically presented in the form of a window with icons of the available resources that may be selected by the programmer. The user modules once selected, placed and programmed work as peripherals of the target microcontroller.
Embodiments of the present invention also include a user module information presenter. The user module information presenter is presented to the programmer as sub-workspaces as of the overall design environment on the programmer""s computer screen. The user module information presenter provides detailed schematic information about a component selected by the programmer for incorporation into the microcontroller. The user module information presented allows the programmer to examine the functional details about a selected component before designing the selected component into the microcontroller.
Embodiments of the present invention also include a resource manager display system. The resource display manager system provides real-time histogram view of the resources being used by the programmer to design the desired microcontroller. The resource display manager enables the programmer to only select enough user modules that the microcontroller has enough resources. If the programmer selects a module that requires more resources than is available, the design software of the present invention will not allow such a selection.
Embodiments of the present invention also include a user selection module. The user selection module provides a catalog of selectable user modules that are available for the programmer to select and a schematic display of a selected user module with a corresponding datasheet information. This sub-workspace allows the designer to select the appropriate user module for a particular function.
Embodiments of the present invention also include a user module placement sub-workspace for providing the programmer a design environment in which to interactively place selected user modules in programmable hardware resources with which to design the desired microcontroller. The user module placement workspace includes a graphical window that illustrates the placement of user modules with respect to the available hardware resources of the microcontroller in a hardware layout graphic display format that is easy to comprehend. The user module placement sub-workspace employs a color coding scheme to relate the user modules placed with their respective schematic placement.
Embodiments of the present invention also include design system blocks that are used by the programmer to place selected user modules to help program the target microcontroller. The design system blocks are analog and digital hardware resource or peripheral blocks of a target microcontroller device that are customized by the placement and configuration of the user modules of the present invention.